home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / gui / triton11.lha / Triton / Demos / Source / demo.c next >
C/C++ Source or Header  |  1994-07-14  |  40KB  |  1,208 lines

  1. /*
  2.  *  Triton - The object oriented GUI creation system for the Amiga
  3.  *  Written by Stefan Zeiger in 1993-1994
  4.  *
  5.  *  (c) 1993-1994 by Stefan Zeiger
  6.  *  You are hereby allowed to use this source or parts
  7.  *  of it for creating programs for AmigaOS which use the
  8.  *  Triton GUI creation system. All other rights reserved.
  9.  *
  10.  *  demo.c - Triton demo program
  11.  *
  12.  */
  13.  
  14.  
  15. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  16. /* ////////////////////////////////////////////////////////////////////////////////// Include our stuff // */
  17. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  18.  
  19. #include <stdio.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22.  
  23. #include <libraries/triton.h>
  24.  
  25. #ifdef __GNUC__
  26. #ifndef __INLINE__
  27. #include <clib/triton_protos.h>
  28. #include <clib/dos_protos.h>
  29. #include <clib/intuition_protos.h>
  30. #else
  31. #include <inline/triton.h>
  32. #include <inline/dos.h>
  33. #include <inline/intuition.h>
  34. #endif /* __INLINE__ */
  35. #else
  36. #include <proto/triton.h>
  37. #include <proto/dos.h>
  38. #include <proto/intuition.h>
  39. #endif /* __GNUC__ */
  40.  
  41.  
  42. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  43. /* /////////////////////////////////////////////////////////////////////////////////// Global variables // */
  44. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  45.  
  46. struct TR_Project *main_project;
  47.  
  48.  
  49. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  50. /* //////////////////////////////////////////////////////////////////////////////////// Window 'groups' // */
  51. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  52.  
  53. ProjectDefinition(groups_trwintags)
  54. {
  55.   WindowTitle("Groups"), WindowPosition(TRWP_CENTERDISPLAY), WindowUnderscore("~"), WindowID(1),
  56.  
  57.   HorizGroupA, Space, VertGroupA,
  58.     Space,
  59.  
  60.     NamedFrameBox("TRGR_PROPSHARE (default)"), ObjectBackfillWin, VertGroupA, Space, HorizGroupC,
  61.       Space,
  62.       Button("Short",1),
  63.       Space,
  64.       Button("And much, much longer...",2),
  65.       Space,
  66.       EndGroup, Space, EndGroup,
  67.  
  68.     Space,
  69.  
  70.     NamedFrameBox("TRGR_EQUALSHARE"), ObjectBackfillWin, VertGroupA, Space, HorizGroupEC,
  71.       Space,
  72.       Button("Short",3),
  73.       Space,
  74.       Button("And much, much longer...",4),
  75.       Space,
  76.       EndGroup, Space, EndGroup,
  77.  
  78.     Space,
  79.  
  80.     NamedFrameBox("TRGR_PROPSPACES"), ObjectBackfillWin, VertGroupA, Space, HorizGroupSC,
  81.       Space,
  82.       Button("Short",5),
  83.       Space,
  84.       Button("And much, much longer...",6),
  85.       Space,
  86.       EndGroup, Space, EndGroup,
  87.  
  88.     Space,
  89.  
  90.     NamedFrameBox("TRGR_ARRAY"), ObjectBackfillWin, VertGroupA, Space, LineArray,
  91.       BeginLine,
  92.         Space,
  93.         Button("Short",7),
  94.         Space,
  95.         Button("And much, much longer...",8),
  96.         Space,
  97.         EndLine,
  98.       Space,
  99.       BeginLine,
  100.         Space,
  101.         Button("Not so short",9),
  102.         Space,
  103.         Button("And a bit longer...",10),
  104.         Space,
  105.         EndLine,
  106.       Space,
  107.       BeginLineI,
  108.         NamedSeparator("An independant line"),
  109.         EndLine,
  110.       Space,
  111.       BeginLine,
  112.         Space,
  113.         Button("foo bar",12),
  114.         Space,
  115.         Button("42",13),
  116.         Space,
  117.         EndLine,
  118.       EndArray, Space, EndGroup,
  119.  
  120.     Space,
  121.     EndGroup, Space, EndGroup,
  122.   EndProject
  123. };
  124.  
  125.  
  126. VOID do_groups(VOID)
  127. {
  128.   BOOL close_me=FALSE;
  129.   struct TR_Message *trmsg;
  130.   struct TR_Project *groups_project;
  131.  
  132.   if(groups_project=TR_OpenProject(Application,groups_trwintags))
  133.   {
  134.     TR_LockProject(main_project);
  135.     while(!close_me)
  136.     {
  137.       TR_Wait(Application,NULL);
  138.       while(trmsg=TR_GetMsg(Application))
  139.       {
  140.         if(trmsg->trm_Project==groups_project) switch(trmsg->trm_Class)
  141.         {
  142.           case TRMS_CLOSEWINDOW:
  143.             close_me=TRUE;
  144.             break;
  145.  
  146.           case TRMS_ERROR:
  147.             puts(TR_GetErrorString(trmsg->trm_Data));
  148.             break;
  149.         }
  150.         TR_ReplyMsg(trmsg);
  151.       }
  152.     }
  153.     TR_UnlockProject(main_project);
  154.     TR_CloseProject(groups_project);
  155.   }
  156.   else DisplayBeep(NULL);
  157. }
  158.  
  159.  
  160. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  161. /* ///////////////////////////////////////////////////////////////////////////////////// Window 'menus' // */
  162. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  163.  
  164. struct TagItem menus_trwintags[]=
  165. {
  166.   WindowID(2), WindowTitle("Menus"),
  167.  
  168.   TRMN_Title,                 (ULONG) "A menu",
  169.    TRMN_Item,                 (ULONG) "A simple item", TRAT_ID, 1,
  170.    TRMN_Item,                 (ULONG) "Another item", TRAT_ID, 2,
  171.    TRMN_Item,                 (ULONG) "And now... a barlabel", TRAT_ID, 3,
  172.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  173.    TRMN_Item,                 (ULONG) "1_An item with a shortcut", TRAT_ID, 4,
  174.    TRMN_Item,                 (ULONG) "2_Another one", TRAT_ID, 5,
  175.    TRMN_Item,                 (ULONG) "3_And number 3", TRAT_ID, 6,
  176.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  177.    TRMN_Item,                 (ULONG) "_F1_And under OS3.0: Extended command keys", TRAT_ID, 6,
  178.    TRMN_Item,                 (ULONG) "_F2_Another one", TRAT_ID, 7,
  179.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  180.    TRMN_Item,                 (ULONG) "How do you like submenus?",
  181.     TRMN_Sub,                 (ULONG) "G_Great!", TRAT_ID, 8,
  182.     TRMN_Sub,                 (ULONG) "F_Fine", TRAT_ID, 9,
  183.     TRMN_Sub,                 (ULONG) "D_Don't know", TRAT_ID, 10,
  184.     TRMN_Sub,                 (ULONG) "N_Not so fine", TRAT_ID, 11,
  185.     TRMN_Sub,                 (ULONG) "P_Puke!", TRAT_ID, 12,
  186.  
  187.   TRMN_Title,                 (ULONG) "Another menu",
  188.    TRMN_Item,                 (ULONG) "This item is ghosted", TRMN_Flags, TRMF_DISABLED, TRAT_ID, 100,
  189.    TRMN_Item,                 (ULONG) TRMN_BARLABEL,
  190.    TRMN_Item,                 (ULONG) "Item 1 is checked", TRMN_Flags, TRMF_CHECKED, TRAT_ID, 13,
  191.    TRMN_Item,                 (ULONG) "Item 2 can be checked, too", TRMN_Flags, TRMF_CHECKIT, TRAT_ID, 14,
  192.  
  193.   TRMN_Title,                 (ULONG) "Ghosted menu",
  194.   TRMN_Flags,                 (ULONG) TRMF_DISABLED,
  195.    TRMN_Item,                 (ULONG) "Item 1", TRAT_ID, 101,
  196.    TRMN_Item,                 (ULONG) "Item 2", TRAT_ID, 102,
  197.  
  198.   TAG_END
  199. };
  200.  
  201.  
  202. VOID do_menus(VOID)
  203. {
  204.   BOOL close_me=FALSE;
  205.   struct TR_Message *trmsg;
  206.   struct TR_Project *menus_project;
  207.  
  208.   if(menus_project=TR_OpenProject(Application,menus_trwintags))
  209.   {
  210.     TR_LockProject(main_project);
  211.     while(!close_me)
  212.     {
  213.       TR_Wait(Application,NULL);
  214.       while(trmsg=TR_GetMsg(Application))
  215.       {
  216.         if(trmsg->trm_Project==menus_project) switch(trmsg->trm_Class)
  217.         {
  218.           case TRMS_CLOSEWINDOW:
  219.             close_me=TRUE;
  220.             break;
  221.  
  222.           case TRMS_ERROR:
  223.             puts(TR_GetErrorString(trmsg->trm_Data));
  224.             break;
  225.  
  226.           case TRMS_NEWVALUE:
  227.             printf("The new value of object %d is %d.\n",trmsg->trm_ID,trmsg->trm_Data);
  228.             break;
  229.  
  230.           case TRMS_ACTION:
  231.             printf("Object %d has triggered an action.\n",trmsg->trm_ID);
  232.             break;
  233.         }
  234.         TR_ReplyMsg(trmsg);
  235.       } 
  236.     }
  237.     TR_UnlockProject(main_project);
  238.     TR_CloseProject(menus_project);
  239.   }
  240.   else DisplayBeep(NULL);
  241. }
  242.  
  243.  
  244. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  245. /* /////////////////////////////////////////////////////////////////////////////////// Window 'gadgets' // */
  246. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  247.  
  248. STRPTR cycle_entries[]=
  249. {
  250.   "Entry 0",
  251.   "1",
  252.   "2",
  253.   "3",
  254.   "4",
  255.   "5",
  256.   "6",
  257.   "7",
  258.   "8",
  259.   "9",
  260.   NULL
  261. };
  262.  
  263.  
  264. STRPTR mx_entries[]=
  265. {
  266.   "Choice 0",
  267.   "Choice 1",
  268.   "Choice 2",
  269.   NULL
  270. };
  271.  
  272.  
  273. struct TagItem gadgets_trwintags[]=
  274. {
  275.   WindowID(3),
  276.   WindowTitle("Gadgets"),
  277.   WindowPosition(TRWP_CENTERDISPLAY),
  278.  
  279.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  280.  
  281.     TROB_Space,               (ULONG) NULL,
  282.  
  283.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  284.       TROB_Space,             (ULONG) NULL,
  285.       TROB_Line,              (ULONG) TROF_HORIZ,
  286.       TROB_Space,             (ULONG) NULL,
  287.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "GadTools", TRAT_Flags, (ULONG) TRTX_TITLE,
  288.       TROB_Space,             (ULONG) NULL,
  289.       TROB_Line,              (ULONG) TROF_HORIZ,
  290.       TROB_Space,             (ULONG) NULL,
  291.     TRGR_End,                 (ULONG) NULL,
  292.  
  293.     TROB_Space,               (ULONG) NULL,
  294.  
  295.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  296.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  297.         TROB_Space,           (ULONG) NULL,
  298.         TROB_CheckBox,        (ULONG) NULL,
  299.           TRAT_ID,            (ULONG) 1,
  300.           TRAT_Value,         (ULONG) TRUE,
  301.       TRGR_End,               (ULONG) NULL,
  302.       TROB_Space,             (ULONG) NULL,
  303.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  304.         TROB_Text,            (ULONG) NULL,
  305.           TRAT_Text,          (ULONG) "_Checkbox",
  306.           TRAT_ID,            (ULONG) 1,
  307.         TROB_Space,           (ULONG) NULL,
  308.       TRGR_End,               (ULONG) NULL,
  309.     TRGR_End,                 (ULONG) NULL,
  310.  
  311.     TROB_Space,               (ULONG) NULL,
  312.  
  313.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  314.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  315.         TROB_Space,           (ULONG) NULL,
  316.         TROB_Slider,          (ULONG) NULL,
  317.           TRAT_ID,            (ULONG) 4,
  318.           TRSL_Min,           (ULONG) 1,
  319.           TRSL_Max,           (ULONG) 3,
  320.           TRAT_Value,         (ULONG) 1,
  321.       TRGR_End,               (ULONG) NULL,
  322.       TROB_Space,             (ULONG) NULL,
  323.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  324.         TROB_Text,            (ULONG) NULL,
  325.           TRAT_Text,          (ULONG) "_Slider: ",
  326.           TRAT_ID,            (ULONG) 4,
  327.         TROB_Text,            (ULONG) NULL,
  328.           TRAT_Value,         (ULONG) 1,
  329.           TRAT_ID,            (ULONG) 4,
  330.           TRAT_MinWidth,      (ULONG) 3,
  331.       TROB_Space,             (ULONG) NULL,
  332.       TRGR_End,               (ULONG) NULL,
  333.     TRGR_End,                 (ULONG) NULL,
  334.  
  335.     TROB_Space,               (ULONG) NULL,
  336.  
  337.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  338.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  339.         TROB_Space,           (ULONG) NULL,
  340.         TROB_Scroller,        (ULONG) NULL,
  341.           TRAT_ID,            (ULONG) 5,
  342.           TRAT_Value,         (ULONG) 2,
  343.           TRSC_Total,         (ULONG) 7,
  344.           TRSC_Visible,       (ULONG) 3,
  345.       TRGR_End,               (ULONG) NULL,
  346.       TROB_Space,             (ULONG) NULL,
  347.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  348.         TROB_Text,            (ULONG) NULL,
  349.           TRAT_Text,          (ULONG) "Sc_roller: ",
  350.           TRAT_ID,            (ULONG) 5,
  351.         TROB_Text,            (ULONG) NULL,
  352.           TRAT_Value,         (ULONG) 2,
  353.           TRAT_ID,            (ULONG) 5,
  354.           TRAT_MinWidth,      (ULONG) 3,
  355.       TROB_Space,             (ULONG) NULL,
  356.       TRGR_End,               (ULONG) NULL,
  357.     TRGR_End,                 (ULONG) NULL,
  358.  
  359.     TROB_Space,               (ULONG) NULL,
  360.  
  361.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  362.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  363.         TROB_Space,           (ULONG) NULL,
  364.         TROB_Palette,         (ULONG) NULL,
  365.           TRAT_ID,            (ULONG) 3,
  366.           TRAT_Value,         (ULONG) 1,
  367.       TRGR_End,               (ULONG) NULL,
  368.       TROB_Space,             (ULONG) NULL,
  369.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  370.         TROB_Text,            (ULONG) NULL,
  371.           TRAT_Text,          (ULONG) "_Palette: ",
  372.           TRAT_ID,            (ULONG) 3,
  373.         TROB_Text,            (ULONG) NULL,
  374.           TRAT_Value,         (ULONG) 1,
  375.           TRAT_ID,            (ULONG) 3,
  376.           TRAT_MinWidth,      (ULONG) 3,
  377.       TROB_Space,             (ULONG) NULL,
  378.       TRGR_End,               (ULONG) NULL,
  379.     TRGR_End,                 (ULONG) NULL,
  380.  
  381.     TROB_Space,               (ULONG) NULL,
  382.  
  383.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  384.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  385.         TROB_Space,           (ULONG) NULL,
  386.         TROB_Cycle,           (ULONG) cycle_entries,
  387.           TRAT_ID,            (ULONG) 6,
  388.           TRAT_Value,         (ULONG) 4,
  389.       TRGR_End,               (ULONG) NULL,
  390.       TROB_Space,             (ULONG) NULL,
  391.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  392.         TROB_Text,            (ULONG) NULL,
  393.           TRAT_Text,          (ULONG) "C_ycle: ",
  394.           TRAT_ID,            (ULONG) 6,
  395.         TROB_Text,            (ULONG) NULL,
  396.           TRAT_Value,         (ULONG) 4,
  397.           TRAT_ID,            (ULONG) 6,
  398.           TRAT_MinWidth,      (ULONG) 3,
  399.       TROB_Space,             (ULONG) NULL,
  400.       TRGR_End,               (ULONG) NULL,
  401.     TRGR_End,                 (ULONG) NULL,
  402.  
  403.     TROB_Space,               (ULONG) NULL,
  404.  
  405.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  406.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  407.         TROB_Space,           (ULONG) NULL,
  408.         TROB_Cycle,           (ULONG) mx_entries,
  409.           TRAT_ID,            (ULONG) 13,
  410.           TRAT_Value,         (ULONG) 1,
  411.           TRAT_Flags,         (ULONG) TRCY_MX,
  412.       TRGR_End,               (ULONG) NULL,
  413.       TROB_Space,             (ULONG) NULL,
  414.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  415.         TROB_Text,            (ULONG) NULL,
  416.           TRAT_Text,          (ULONG) "_MX: ",
  417.           TRAT_ID,            (ULONG) 13,
  418.         TROB_Text,            (ULONG) NULL,
  419.           TRAT_Value,         (ULONG) 1,
  420.           TRAT_ID,            (ULONG) 13,
  421.           TRAT_MinWidth,      (ULONG) 3,
  422.         TROB_Space,           (ULONG) NULL,
  423.       TRGR_End,               (ULONG) NULL,
  424.     TRGR_End,                 (ULONG) NULL,
  425.  
  426.     TROB_Space,               (ULONG) NULL,
  427.  
  428.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
  429.       TRGR_Horiz,             (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  430.         TROB_Space,           (ULONG) NULL,
  431.         TROB_String,          (ULONG) "foo bar",
  432.           TRAT_ID,            (ULONG) 7,
  433.       TRGR_End,               (ULONG) NULL,
  434.       TROB_Space,             (ULONG) NULL,
  435.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  436.         TROB_Text,            (ULONG) NULL,
  437.           TRAT_Text,          (ULONG) "S_tring",
  438.           TRAT_ID,            (ULONG) 7,
  439.       TROB_Space,             (ULONG) NULL,
  440.       TRGR_End,               (ULONG) NULL,
  441.     TRGR_End,                 (ULONG) NULL,
  442.  
  443.     TROB_Space,               (ULONG) NULL,
  444.  
  445.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  446.       TROB_Space,             (ULONG) NULL,
  447.       TROB_Line,              (ULONG) TROF_HORIZ,
  448.       TROB_Space,             (ULONG) NULL,
  449.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "BOOPSI", TRAT_Flags, (ULONG) TRTX_TITLE,
  450.       TROB_Space,             (ULONG) NULL,
  451.       TROB_Line,              (ULONG) TROF_HORIZ,
  452.       TROB_Space,             (ULONG) NULL,
  453.     TRGR_End,                 (ULONG) NULL,
  454.  
  455.     TROB_Space,               (ULONG) NULL,
  456.  
  457.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  458.       TROB_Space,             (ULONG) NULL,
  459.       TROB_Button,            (ULONG) NULL, TRAT_ID, 2, TRAT_Text, (ULONG) "_Button",
  460.       TROB_Space,             (ULONG) NULL,
  461.     TRGR_End,                 (ULONG) NULL,
  462.  
  463.     TROB_Space,               (ULONG) NULL,
  464.  
  465.     TRGR_Horiz,               (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
  466.       TROB_Space,             (ULONG) NULL,
  467.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_File:", TRAT_ID, 10,
  468.       TROB_Space,             (ULONG) NULL,
  469.       TROB_Button,            (ULONG) TRBT_GETFILE, TRAT_ID, 10, TRAT_Text, (ULONG) "",
  470.       TROB_Space,             (ULONG) NULL,
  471.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Drawer:", TRAT_ID, 11,
  472.       TROB_Space,             (ULONG) NULL,
  473.       TROB_Button,            (ULONG) TRBT_GETDRAWER, TRAT_ID, 11, TRAT_Text, (ULONG) "",
  474.       TROB_Space,             (ULONG) NULL,
  475.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Entry:", TRAT_ID, 12,
  476.       TROB_Space,             (ULONG) NULL,
  477.       TROB_Button,            (ULONG) TRBT_GETENTRY, TRAT_ID, 12, TRAT_Text, (ULONG) "",
  478.       TROB_Space,             (ULONG) NULL,
  479.     TRGR_End,                 (ULONG) NULL,
  480.  
  481.     TROB_Space,               (ULONG) NULL,
  482.  
  483.     TRGR_End,                 (ULONG) NULL,
  484.  
  485.   TAG_END
  486. };
  487.  
  488.  
  489. VOID do_gadgets(VOID)
  490. {
  491.   BOOL close_me=FALSE;
  492.   struct TR_Message *trmsg;
  493.   struct TR_Project *gadgets_project;
  494.  
  495.   if(gadgets_project=TR_OpenProject(Application,gadgets_trwintags))
  496.   {
  497.     TR_LockProject(main_project);
  498.     while(!close_me)
  499.     {
  500.       TR_Wait(Application,NULL);
  501.       while(trmsg=TR_GetMsg(Application))
  502.       {
  503.         if(trmsg->trm_Project==gadgets_project) switch(trmsg->trm_Class)
  504.         {
  505.           case TRMS_CLOSEWINDOW:
  506.             close_me=TRUE;
  507.             break;
  508.  
  509.           case TRMS_ERROR:
  510.             puts(TR_GetErrorString(trmsg->trm_Data));
  511.             break;
  512.         }
  513.         TR_ReplyMsg(trmsg);
  514.       }
  515.     }
  516.     TR_UnlockProject(main_project);
  517.     TR_CloseProject(gadgets_project);
  518.   }
  519.   else DisplayBeep(NULL);
  520. }
  521.  
  522.  
  523. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  524. /* ///////////////////////////////////////////////////////////////////////////////// Window 'disabling' // */
  525. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  526.  
  527. struct TagItem disabling_trwintags[]=
  528. {
  529.   WindowID(4), WindowTitle("Disabling"), WindowPosition(TRWP_CENTERDISPLAY),
  530.  
  531.   TRGR_Vert,                  (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
  532.  
  533.     TROB_Space,               (ULONG) NULL,
  534.  
  535.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  536.       TROB_Space,             (ULONG) NULL,
  537.       TROB_CheckBox,          (ULONG) NULL, TRAT_ID, 1, TRAT_Value, TRUE,
  538.       TROB_Space,             (ULONG) NULL,
  539.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Disable", TRAT_ID, 1,
  540.       TRGR_Horiz,             (ULONG) TRGR_PROPSPACES,
  541.         TROB_Space,           (ULONG) NULL,
  542.         TRGR_End,             (ULONG) NULL,
  543.       TRGR_End,               (ULONG) NULL,
  544.  
  545.     TROB_Space,               (ULONG) NULL,
  546.  
  547.     TRGR_Horiz,               (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
  548.       TROB_Space,             (ULONG) NULL,
  549.       TROB_Line,              (ULONG) TROF_HORIZ,
  550.       TROB_Space,             (ULONG) NULL,
  551.       TRGR_End,               (ULONG) NULL,
  552.  
  553.     TROB_Space,               (ULONG) NULL,
  554.  
  555.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  556.       TROB_Space,             (ULONG) NULL,
  557.       TROB_CheckBox,          (ULONG) NULL, TRAT_Value, TRUE, TRAT_ID, 2, TRAT_Disabled, TRUE,
  558.       TROB_Space,             (ULONG) NULL,
  559.       TROB_Text,              (ULONG) NULL, TRAT_Text, (ULONG) "_Checkbox", TRAT_ID, 2,
  560.       TROB_Space,             (ULONG) NULL,
  561.     TRGR_End,                 (ULONG) NULL,
  562.  
  563.     TROB_Space,               (ULONG) NULL,
  564.  
  565.     TRGR_Horiz,               (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
  566.       TROB_Space,             (ULONG) NULL,
  567.       TROB_Button,            (ULONG) NULL, TRAT_Text, (ULONG) "_Button", TRAT_ID, 3, TRAT_Disabled, TRUE,
  568.       TROB_Space,             (ULONG) NULL,
  569.     TRGR_End,                 (ULONG) NULL,
  570.  
  571.     TROB_Space,               (ULONG) NULL,
  572.  
  573.   TRGR_End,                   (ULONG) NULL,
  574.  
  575.   TAG_END
  576. };
  577.  
  578.  
  579. VOID do_disabling(VOID)
  580. {
  581.   BOOL close_me=FALSE;
  582.   struct TR_Message *trmsg;
  583.   struct TR_Project *disabling_project;
  584.  
  585.   if(disabling_project=TR_OpenProject(Application,disabling_trwintags))
  586.   {
  587.     TR_LockProject(main_project);
  588.     while(!close_me)
  589.     {
  590.       TR_Wait(Application,NULL);
  591.       while(trmsg=TR_GetMsg(Application))
  592.       {
  593.         if(trmsg->trm_Project==disabling_project) switch(trmsg->trm_Class)
  594.         {
  595.           case TRMS_CLOSEWINDOW:
  596.             close_me=TRUE;
  597.             break;
  598.  
  599.           case TRMS_ERROR:
  600.             puts(TR_GetErrorString(trmsg->trm_Data));
  601.             break;
  602.  
  603.           case TRMS_NEWVALUE:
  604.             if(trmsg->trm_ID==1)
  605.             {
  606.               TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg->trm_Data);
  607.               TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg->trm_Data);
  608.             }
  609.         }
  610.         TR_ReplyMsg(trmsg);
  611.       }
  612.     }
  613.     TR_UnlockProject(main_project);
  614.     TR_CloseProject(disabling_project);
  615.   }
  616.   else DisplayBeep(NULL);
  617. }
  618.  
  619.  
  620. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  621. /* ////////////////////////////////////////////////////////////////////////////////////// Window 'text' // */
  622. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  623.  
  624. ProjectDefinition(text_trwintags)
  625. {
  626.   WindowID(5), WindowTitle("Text"), WindowPosition(TRWP_CENTERDISPLAY),
  627.   VertGroupA,
  628.     Space, CenteredText("Normal text"),
  629.     Space, CenteredTextH("Highlighted text"),
  630.     Space, CenteredText3("3-dimensional text"),
  631.     Space, CenteredTextB("Bold text"),
  632.     Space, CenteredText("A _shortcut"),
  633.     Space, CenteredInteger(42),
  634.     Space, EndGroup, EndProject
  635. };
  636.  
  637.  
  638. VOID do_text(VOID)
  639. {
  640.   BOOL close_me=FALSE;
  641.   struct TR_Message *trmsg;
  642.   struct TR_Project *text_project;
  643.  
  644.   if(text_project=TR_OpenProject(Application,text_trwintags))
  645.   {
  646.     TR_LockProject(main_project);
  647.     while(!close_me)
  648.     {
  649.       TR_Wait(Application,NULL);
  650.       while(trmsg=TR_GetMsg(Application))
  651.       {
  652.         if(trmsg->trm_Project==text_project) switch(trmsg->trm_Class)
  653.         {
  654.           case TRMS_CLOSEWINDOW:
  655.             close_me=TRUE;
  656.             break;
  657.  
  658.           case TRMS_ERROR:
  659.             puts(TR_GetErrorString(trmsg->trm_Data));
  660.             break;
  661.         }
  662.         TR_ReplyMsg(trmsg);
  663.       }
  664.     }
  665.     TR_UnlockProject(main_project);
  666.     TR_CloseProject(text_project);
  667.   }
  668.   else DisplayBeep(NULL);
  669. }
  670.  
  671.  
  672. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  673. /* /////////////////////////////////////////////////////////////////////////////// Window 'connections' // */
  674. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  675.  
  676. ProjectDefinition(connections_trwintags)
  677. {
  678.   WindowID(6), WindowTitle("Connections"), WindowPosition(TRWP_CENTERDISPLAY),
  679.   VertGroupA,
  680.     Space,
  681.     NamedSeparatorI("_Checkmarks",1),
  682.     Space,
  683.  
  684.     HorizGroupSAC,
  685.       Space, CheckBox(1),
  686.       Space, CheckBox(1),
  687.       Space, CheckBox(1),
  688.       Space, EndGroup,
  689.  
  690.     Space,
  691.  
  692.     HorizGroupSAC,
  693.       Space, CheckBox(1),
  694.       Space, CheckBox(1),
  695.       Space, CheckBox(1),
  696.       Space, EndGroup,
  697.  
  698.     Space,
  699.     HorizGroupSAC,
  700.       Space, CheckBox(1),
  701.       Space, CheckBox(1),
  702.       Space, CheckBox(1),
  703.       Space, EndGroup,
  704.  
  705.     Space,
  706.     NamedSeparatorI("_Slider and Progress indicator",2),
  707.     Space,
  708.  
  709.     HorizGroupAC,
  710.       Space,
  711.       SliderGadget(0,10,8,2),
  712.       Space,
  713.       Integer3(8),TRAT_ID,2,TRAT_MinWidth,3,
  714.       Space,
  715.       EndGroup,
  716.  
  717.     Space,
  718.  
  719.     HorizGroupAC,
  720.       Space,
  721.       TextN("0%"),
  722.       Space,
  723.       Progress(10,8,2),
  724.       Space,
  725.       TextN("100%"),
  726.       Space,
  727.       EndGroup,
  728.  
  729.     Space,
  730.   EndGroup, EndProject
  731. };
  732.  
  733.  
  734. VOID do_connections(VOID)
  735. {
  736.   BOOL close_me=FALSE;
  737.   struct TR_Message *trmsg;
  738.   struct TR_Project *connections_project;
  739.  
  740.   if(connections_project=TR_OpenProject(Application,connections_trwintags))
  741.   {
  742.     TR_LockProject(main_project);
  743.     while(!close_me)
  744.     {
  745.       TR_Wait(Application,NULL);
  746.       while(trmsg=TR_GetMsg(Application))
  747.       {
  748.         if(trmsg->trm_Project==connections_project) switch(trmsg->trm_Class)
  749.         {
  750.           case TRMS_CLOSEWINDOW:
  751.             close_me=TRUE;
  752.             break;
  753.  
  754.           case TRMS_ERROR:
  755.             puts(TR_GetErrorString(trmsg->trm_Data));
  756.             break;
  757.         }
  758.         TR_ReplyMsg(trmsg);
  759.       }
  760.     }
  761.     TR_UnlockProject(main_project);
  762.     TR_CloseProject(connections_project);
  763.   }
  764.   else DisplayBeep(NULL);
  765. }
  766.  
  767.  
  768. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  769. /* ////////////////////////////////////////////////////////////////////////////////// Window 'backfill' // */
  770. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  771.  
  772. ProjectDefinition(backfill_trwintags)
  773. {
  774.   WindowID(7), WindowTitle("Backfill"), WindowPosition(TRWP_CENTERDISPLAY),
  775.   VertGroupA,
  776.     Space,  CenteredText("Each window and"),
  777.     SpaceS, CenteredText("FrameBox can have"),
  778.     SpaceS, CenteredText("one of the following"),
  779.     SpaceS, CenteredText("backfill patterns"),
  780.     Space,  HorizGroupA,
  781.               Space, GroupBox, ObjectBackfillS, SpaceB,
  782.               Space, GroupBox, ObjectBackfillSA, SpaceB,
  783.               Space, GroupBox, ObjectBackfillSF, SpaceB,
  784.               Space, EndGroup,
  785.     Space,  HorizGroupA,
  786.               Space, GroupBox, ObjectBackfillSB, SpaceB,
  787.               Space, GroupBox, ObjectBackfillA, SpaceB,
  788.               Space, GroupBox, ObjectBackfillAF, SpaceB,
  789.               Space, EndGroup,
  790.     Space,  HorizGroupA,
  791.               Space, GroupBox, ObjectBackfillAB, SpaceB,
  792.               Space, GroupBox, ObjectBackfillF, SpaceB,
  793.               Space, GroupBox, ObjectBackfillFB, SpaceB,
  794.               Space, EndGroup,
  795.     Space, EndGroup, EndProject
  796. };
  797.  
  798.  
  799. VOID do_backfill(VOID)
  800. {
  801.   BOOL close_me=FALSE;
  802.   struct TR_Message *trmsg;
  803.   struct TR_Project *backfill_project;
  804.  
  805.   if(backfill_project=TR_OpenProject(Application,backfill_trwintags))
  806.   {
  807.     TR_LockProject(main_project);
  808.     while(!close_me)
  809.     {
  810.       TR_Wait(Application,NULL);
  811.       while(trmsg=TR_GetMsg(Application))
  812.       {
  813.         if(trmsg->trm_Project==backfill_project) switch(trmsg->trm_Class)
  814.         {
  815.           case TRMS_CLOSEWINDOW:
  816.             close_me=TRUE;
  817.             break;
  818.  
  819.           case TRMS_ERROR:
  820.             puts(TR_GetErrorString(trmsg->trm_Data));
  821.             break;
  822.         }
  823.         TR_ReplyMsg(trmsg);
  824.       }
  825.     }
  826.     TR_UnlockProject(main_project);
  827.     TR_CloseProject(backfill_project);
  828.   }
  829.   else DisplayBeep(NULL);
  830. }
  831.  
  832.  
  833. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  834. /* ///////////////////////////////////////////////////////////////////////////////// Window 'appwindow' // */
  835. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  836.  
  837. ProjectDefinition(appwindow_trwintags)
  838. {
  839.   WindowID(8), WindowTitle("AppWindow"), WindowPosition(TRWP_CENTERDISPLAY),
  840.   VertGroupA,
  841.     Space,  CenteredText("This window is an application window."),
  842.     SpaceS, CenteredText("Drop icons into the window or into"),
  843.     SpaceS, CenteredText("the icon drop boxes below and see"),
  844.     SpaceS, CenteredText("what will happen..."),
  845.     Space,  HorizGroupA,
  846.               Space, DropBox(1),
  847.               Space, DropBox(2),
  848.               Space, EndGroup,
  849.     Space, EndGroup, EndProject
  850. };
  851.  
  852.  
  853. VOID do_appwindow(VOID)
  854. {
  855.   BOOL close_me=FALSE;
  856.   struct TR_Message *trmsg;
  857.   struct TR_Project *appwindow_project;
  858.   UBYTE reqstr[200],dirname[100];
  859.  
  860.   if(appwindow_project=TR_OpenProject(Application,appwindow_trwintags))
  861.   {
  862.     TR_LockProject(main_project);
  863.     while(!close_me)
  864.     {
  865.       TR_Wait(Application,NULL);
  866.       while(trmsg=TR_GetMsg(Application))
  867.       {
  868.         if(trmsg->trm_Project==appwindow_project) switch(trmsg->trm_Class)
  869.         {
  870.           case TRMS_CLOSEWINDOW:
  871.             close_me=TRUE;
  872.             break;
  873.  
  874.           case TRMS_ERROR:
  875.             puts(TR_GetErrorString(trmsg->trm_Data));
  876.             break;
  877.  
  878.           case TRMS_ICONDROPPED:
  879.             dirname[0]=0;
  880.             NameFromLock(((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Lock,dirname,100);
  881.             AddPart(dirname,((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Name,100);
  882.             switch(trmsg->trm_ID)
  883.             {
  884.               case 1:
  885.                 sprintf(reqstr,"Icon(s) dropped into the left box.\tName of first dropped icon:\n%%3%s",dirname);
  886.                 break;
  887.               case 2:
  888.                 sprintf(reqstr,"Icon(s) dropped into the right box.\tName of first dropped icon:\n%%3%s",dirname);
  889.                 break;
  890.               default:
  891.                 sprintf(reqstr,"Icon(s) dropped into the window.\tName of first dropped icon:\n%%3%s",dirname);
  892.             }
  893.             TR_EasyRequestTags(Application,reqstr,"_Ok",
  894.               TREZ_LockProject,appwindow_project,TREZ_Title,"AppWindow report",TREZ_Activate,TRUE,TAG_END);
  895.             break;
  896.         }
  897.         TR_ReplyMsg(trmsg);
  898.       }
  899.     }
  900.     TR_UnlockProject(main_project);
  901.     TR_CloseProject(appwindow_project);
  902.   }
  903.   else DisplayBeep(NULL);
  904. }
  905.  
  906.  
  907. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  908. /* ///////////////////////////////////////////////////////////////////////////////////// Window 'lists' // */
  909. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  910.  
  911. struct TR_Dimensions lists_dim;
  912.  
  913. extern struct List LVList1;
  914. extern struct List LVList2;
  915. extern struct List LVList3;
  916.  
  917. struct Node LVNodes1[] =
  918. {
  919.   { &LVNodes1[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  920.   { &LVNodes1[2], &LVNodes1[0],                     0, 0, "READ" },
  921.   { &LVNodes1[3], &LVNodes1[1],                     0, 0, "ONLY" },
  922.   { &LVNodes1[4], &LVNodes1[2],                     0, 0, "Listview" },
  923.   { &LVNodes1[5], &LVNodes1[3],                     0, 0, "gadget" },
  924.   { &LVNodes1[6], &LVNodes1[4],                     0, 0, "using the" },
  925.   { &LVNodes1[7], &LVNodes1[5],                     0, 0, "fixed-width" },
  926.   { &LVNodes1[ 8], &LVNodes1[ 6],                   0, 0, "font." },
  927.   { &LVNodes1[ 9], &LVNodes1[ 7],                   0, 0, "" },
  928.   { &LVNodes1[10], &LVNodes1[ 8],                   0, 0, "This window" },
  929.   { &LVNodes1[11], &LVNodes1[ 9],                   0, 0, "uses a" },
  930.   { &LVNodes1[12], &LVNodes1[10],                   0, 0, "dimensions" },
  931.   { &LVNodes1[13], &LVNodes1[11],                   0, 0, "structure," },
  932.   { &LVNodes1[14], &LVNodes1[12],                   0, 0, "so it will" },
  933.   { &LVNodes1[15], &LVNodes1[13],                   0, 0, "remember" },
  934.   { &LVNodes1[16], &LVNodes1[14],                   0, 0, "its" },
  935.   { &LVNodes1[17], &LVNodes1[15],                   0, 0, "position" },
  936.   { &LVNodes1[18], &LVNodes1[16],                   0, 0, "when you" },
  937.   { (struct Node *)&LVList3.lh_Tail, &LVNodes1[17], 0, 0, "reopen it." }
  938. };
  939.  
  940. struct Node LVNodes2[] =
  941. {
  942.   { &LVNodes2[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  943.   { &LVNodes2[2], &LVNodes2[0],                     0, 0, "SELECT" },
  944.   { &LVNodes2[3], &LVNodes2[1],                     0, 0, "Listview" },
  945.   { &LVNodes2[4], &LVNodes2[2],                     0, 0, "gadget." },
  946.   { &LVNodes2[5], &LVNodes2[3],                     0, 0, "Use the" },
  947.   { &LVNodes2[6], &LVNodes2[4],                     0, 0, "numeric" },
  948.   { &LVNodes2[7], &LVNodes2[5],                     0, 0, "key pad to" },
  949.   { &LVNodes2[8], &LVNodes2[6],                     0, 0, "move" },
  950.   { (struct Node *)&LVList3.lh_Tail, &LVNodes2[7],  0, 0, "around." }
  951. };
  952.  
  953. struct Node LVNodes3[] =
  954. {
  955.   { &LVNodes3[1], (struct Node *)&LVList3.lh_Head,  0, 0, "This is a" },
  956.   { &LVNodes3[2], &LVNodes3[0],                     0, 0, "SHOW" },
  957.   { &LVNodes3[3], &LVNodes3[1],                     0, 0, "SELECTED" },
  958.   { &LVNodes3[4], &LVNodes3[2],                     0, 0, "Listview" },
  959.   { &LVNodes3[5], &LVNodes3[3],                     0, 0, "gadget." },
  960.   { &LVNodes3[6], &LVNodes3[4],                     0, 0, "This list" },
  961.   { &LVNodes3[7], &LVNodes3[5],                     0, 0, "is a bit" },
  962.   { &LVNodes3[8], &LVNodes3[6],                     0, 0, "longer, so" },
  963.   { &LVNodes3[9], &LVNodes3[7],                     0, 0, "that you" },
  964.   { &LVNodes3[10],&LVNodes3[8],                     0, 0, "can try the" },
  965.   { &LVNodes3[11],&LVNodes3[9],                     0, 0, "other" },
  966.   { &LVNodes3[12],&LVNodes3[10],                    0, 0, "keyboard" },
  967.   { (struct Node *)&LVList3.lh_Tail, &LVNodes3[11], 0, 0, "shortcuts." }
  968. };
  969.  
  970. struct List LVList1=
  971. {
  972.   (struct Node *)&LVNodes1[0],
  973.   (struct Node *)NULL,
  974.   (struct Node *)&LVNodes1[18],
  975.   0,0
  976. };
  977.  
  978. struct List LVList2=
  979. {
  980.   (struct Node *)&LVNodes2[0],
  981.   (struct Node *)NULL,
  982.   (struct Node *)&LVNodes2[8],
  983.   0,0
  984. };
  985.  
  986. struct List LVList3=
  987. {
  988.   (struct Node *)&LVNodes3[0],
  989.   (struct Node *)NULL,
  990.   (struct Node *)&LVNodes3[12],
  991.   0,0
  992. };
  993.  
  994.  
  995. struct TagItem lists_trwintags[]=
  996. {
  997.   WindowID(9), WindowTitle("Lists"), WindowPosition(TRWP_CENTERDISPLAY), WindowDimensions(&lists_dim),
  998.   HorizGroupA, Space, VertGroupA,
  999.     Space,
  1000.     NamedSeparatorIN("_Read only",1),
  1001.     Space,
  1002.     FWListROCN(&LVList1,1,0),
  1003.     Space,
  1004.     NamedSeparatorIN("_Select",2),
  1005.     Space,
  1006.     ListSelC(&LVList2,2,0),
  1007.     Space,
  1008.     NamedSeparatorIN("S_how selected",3),
  1009.     Space,
  1010.     ListSSN(&LVList3,3,0,1),
  1011.     Space,
  1012.   EndGroup, Space, EndGroup,
  1013.   EndProject
  1014. };
  1015.  
  1016.  
  1017. VOID do_lists(VOID)
  1018. {
  1019.   BOOL close_me=FALSE;
  1020.   struct TR_Message *trmsg;
  1021.   struct TR_Project *lists_project;
  1022.  
  1023.   if(lists_project=TR_OpenProject(Application,lists_trwintags))
  1024.   {
  1025.     TR_LockProject(main_project);
  1026.     while(!close_me)
  1027.     {
  1028.       TR_Wait(Application,NULL);
  1029.       while(trmsg=TR_GetMsg(Application))
  1030.       {
  1031.         if(trmsg->trm_Project==lists_project) switch(trmsg->trm_Class)
  1032.         {
  1033.           case TRMS_CLOSEWINDOW:
  1034.             close_me=TRUE;
  1035.             break;
  1036.  
  1037.           case TRMS_ERROR:
  1038.             puts(TR_GetErrorString(trmsg->trm_Data));
  1039.             break;
  1040.         }
  1041.         TR_ReplyMsg(trmsg);
  1042.       }
  1043.     }
  1044.     TR_UnlockProject(main_project);
  1045.     TR_CloseProject(lists_project);
  1046.   }
  1047.   else DisplayBeep(NULL);
  1048. }
  1049.  
  1050.  
  1051. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1052. /* ///////////////////////////////////////////////////////////////////////////////////// Window 'about' // */
  1053. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1054.  
  1055. /* Note: This could be done even simpler with TR_EasyRequest().       */
  1056. /* ~~~~~ It is done with TR_AutoRequest() to show you how this works. */
  1057. /*       See window 'AppWindow' for a TR_EasyRequest() example.       */
  1058.  
  1059. ProjectDefinition(about_trwintags)
  1060. {
  1061.   BeginRequester("About...",TRWP_CENTERDISPLAY),
  1062.  
  1063.   VertGroupA, Space,  CenteredText3("Triton Demo"),
  1064.               SpaceS, CenteredText("© 1993-1994 by Stefan Zeiger"),
  1065.               Space,  HorizSeparator,
  1066.               Space,  CenteredText("This program is using the"),
  1067.               SpaceS, CenteredText("Triton GUI creation system"),
  1068.               SpaceS, CenteredText("which is © by Stefan Zeiger"),
  1069.               Space,  EndGroup,
  1070.  
  1071.   BeginRequesterGads,
  1072.   CenteredButtonRE("_Ok",1),
  1073.   EndRequester
  1074. };
  1075.  
  1076.  
  1077. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1078. /* ////////////////////////////////////////////////////////////////////////////////////// Window 'main' // */
  1079. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1080.  
  1081. ProjectDefinition(main_trwintags)
  1082. {
  1083.   WindowID(10), WindowTitle("Triton Demo"), WindowPosition(TRWP_CENTERDISPLAY), WindowFlags(TRWF_HELP),
  1084.   BeginMenu("Project"),
  1085.     MenuItem("?_About...",101),
  1086.     ItemBarlabel,
  1087.     MenuItem("H_Help",102),
  1088.     ItemBarlabel,
  1089.     MenuItem("Q_Quit",103),
  1090.   VertGroupA,
  1091.     Space,  CenteredText3("T · r · i · t · o · n"),
  1092.     Space,  CenteredText3("The object oriented GUI creation system"),
  1093.     Space,  CenteredText("Demo program"),
  1094.     Space,  CenteredText("Written and © 1993-1994 by Stefan Zeiger"),
  1095.     Space,  HorizSeparator,
  1096.     Space,  HorizGroupEA,
  1097.               Space, Button("_Gadgets",1),
  1098.               Space, Button("G_roups",2),
  1099.               Space, Button("_Text",3),
  1100.               Space, EndGroup,
  1101.     Space, HorizGroupEA,
  1102.               Space, Button("_Connections",4),
  1103.               Space, Button("_Backfill",5),
  1104.               Space, Button("_Disabling",6),
  1105.               Space, EndGroup,
  1106.     Space, HorizGroupEA,
  1107.               Space, Button("_AppWindow",7),
  1108.               Space, Button("_Menus",8),
  1109.               Space, Button("_Lists",9),
  1110.               Space, EndGroup,
  1111.     Space, EndGroup, EndProject
  1112. };
  1113.  
  1114.  
  1115. VOID do_main(VOID)
  1116. {
  1117.   BOOL close_me=FALSE;
  1118.   struct TR_Message *trmsg;
  1119.   UBYTE reqstr[100];
  1120.  
  1121.   if(main_project=TR_OpenProject(Application,main_trwintags))
  1122.   {
  1123.     while(!close_me)
  1124.     {
  1125.       TR_Wait(Application,NULL);
  1126.       while(trmsg=TR_GetMsg(Application))
  1127.       {
  1128.         if(trmsg->trm_Project==main_project) switch(trmsg->trm_Class)
  1129.         {
  1130.           case TRMS_CLOSEWINDOW:
  1131.             close_me=TRUE;
  1132.             break;
  1133.  
  1134.           case TRMS_HELP:
  1135.             sprintf(reqstr,"You requested help for object %ld.",trmsg->trm_ID);
  1136.             TR_EasyRequestTags(Application,reqstr,"_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1137.             break;
  1138.  
  1139.           case TRMS_ERROR:
  1140.             puts(TR_GetErrorString(trmsg->trm_Data));
  1141.             break;
  1142.  
  1143.           case TRMS_ACTION:
  1144.             switch(trmsg->trm_ID)
  1145.             {
  1146.               case 1:
  1147.                 do_gadgets();
  1148.                 break;
  1149.               case 2:
  1150.                 do_groups();
  1151.                 break;
  1152.               case 3:
  1153.                 do_text();
  1154.                 break;
  1155.               case 4:
  1156.                 do_connections();
  1157.                 break;
  1158.               case 5:
  1159.                 do_backfill();
  1160.                 break;
  1161.               case 6:
  1162.                 do_disabling();
  1163.                 break;
  1164.               case 7:
  1165.                 do_appwindow();
  1166.                 break;
  1167.               case 8:
  1168.                 do_menus();
  1169.                 break;
  1170.               case 9:
  1171.                 do_lists();
  1172.                 break;
  1173.               case 101:
  1174.                 TR_AutoRequest(Application,main_project,about_trwintags);
  1175.                 break;
  1176.               case 102:
  1177.                 TR_EasyRequestTags(Application,"To get help, move the mouse pointer over\nany gadget or menu item and press <Help>.","_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
  1178.                 break;
  1179.               case 103:
  1180.                 close_me=TRUE;
  1181.             }
  1182.             break;
  1183.         }
  1184.         TR_ReplyMsg(trmsg);
  1185.       }
  1186.     }
  1187.     TR_CloseProject(main_project);
  1188.   }
  1189.   else DisplayBeep(NULL);
  1190. }
  1191.  
  1192.  
  1193. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1194. /* ////////////////////////////////////////////////////////////////////////////////////// Main function // */
  1195. /* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
  1196.  
  1197. int main(void)
  1198. {
  1199.   if(TR_OpenTriton(TRITON11VERSION,TRCA_Name,"TritonDemo",TRCA_LongName,"Triton demo",TRCA_Version,"1.1",TAG_END))
  1200.   {
  1201.     do_main();
  1202.     TR_CloseTriton();
  1203.     return 0;
  1204.   } else puts("Can't open triton.library v2+.");
  1205.  
  1206.   return 20;
  1207. }
  1208.